package com.company.huisuo.network.api

import com.company.huisuo.biz.bean.MerchantAtmosphereResponse
import com.company.huisuo.biz.bean.AppSwitchAtmosphereReqVO
import com.company.huisuo.biz.bean.SwitchAtmosphereResponse
import com.company.huisuo.biz.bean.AppStartSessionReqVO
import com.company.huisuo.biz.bean.StartSessionResponse
import com.company.huisuo.biz.bean.AppRoomStyleSelectReqVO
import com.company.huisuo.biz.bean.RoomStyleSelectResponse
import com.company.huisuo.biz.bean.AppEndSessionReqVO
import com.company.huisuo.biz.bean.EndSessionResponse
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.POST
import retrofit2.http.Query

/**
 * 商家氛围API接口
 */
interface MerchantAtmosphereApi {
    
    /**
     * 获得商家氛围列表
     * @param sessionId 场次ID
     * @param tenantId 租户编号（可选）
     * @param authorization 认证Token（可选）
     */
    @GET("/app-api/play/session/getMerchantAtmosphereList")
    suspend fun getMerchantAtmosphereList(
        @Query("sessionId") sessionId: String,
        @Header("tenant-id") tenantId: Int? = null,
        @Header("Authorization") authorization: String? = null
    ): MerchantAtmosphereResponse
    
    /**
     * 切换氛围
     * @param appSwitchAtmosphereReqVO 切换氛围请求体
     * @param tenantId 租户编号（可选）
     * @param authorization 认证Token（可选）
     */
    @POST("/app-api/play/session/switchAtmosphere")
    suspend fun switchAtmosphere(
        @Body appSwitchAtmosphereReqVO: AppSwitchAtmosphereReqVO,
        @Header("tenant-id") tenantId: Int? = null,
        @Header("Authorization") authorization: String? = null
    ): SwitchAtmosphereResponse
    
    /**
     * 开始场次
     * @param appStartSessionReqVO 开始场次请求体
     * @param tenantId 租户编号（可选）
     * @param authorization 认证Token（可选）
     */
    @POST("/app-api/play/session/startSession")
    suspend fun startSession(
        @Body appStartSessionReqVO: AppStartSessionReqVO,
        @Header("tenant-id") tenantId: Int? = null,
        @Header("Authorization") authorization: String? = null
    ): StartSessionResponse
    
    /**
     * 房间风格选择
     * @param appRoomStyleSelectReqVO 房间风格选择请求体
     * @param tenantId 租户编号（可选）
     * @param authorization 认证Token（可选）
     */
    @POST("/app-api/play/session/roomStyleSelect")
    suspend fun roomStyleSelect(
        @Body appRoomStyleSelectReqVO: AppRoomStyleSelectReqVO,
        @Header("tenant-id") tenantId: Int? = null,
        @Header("Authorization") authorization: String? = null
    ): RoomStyleSelectResponse
    
    /**
     * 结束场次
     * @param appEndSessionReqVO 结束场次请求体
     * @param tenantId 租户编号（可选）
     * @param authorization 认证Token（可选）
     */
    @POST("/app-api/play/session/endSession")
    suspend fun endSession(
        @Body appEndSessionReqVO: AppEndSessionReqVO,
        @Header("tenant-id") tenantId: Int? = null,
        @Header("Authorization") authorization: String? = null
    ): EndSessionResponse
}